/****************************************************************************
 * Copyright (C) 2025 Chenyz. All rights reserved.
 *
 * @file    TinyOS_Config.h
 *
 * @par     dependencies
 *          - stdint.h (Standard integer types)
 *
 * @author  Chenyz
 *
 * @brief   TinyOS Configuration Header
 *          This file contains all configurable parameters for the TinyOS
 *          real-time operating system, allowing customization of:
 *          - Task scheduling and priority settings
 *          - System timing and tick configuration
 *          - Kernel object enabling/disabling
 *          - Memory and stack allocation
 *          - Feature selection for footprint optimization
 *
 * @version V1.0
 * @date    2025-10-03
 *
 * @note    Configuration guidelines:
 *          - Adjust priorities based on application requirements
 *          - Modify stack sizes according to task complexity
 *          - Disable unused features to reduce memory footprint
 *          - Ensure tick period aligns with timing requirements
 ****************************************************************************/

#ifndef __TINYOS_CONFIG_H__
#define __TINYOS_CONFIG_H__

/******************************** Includes **********************************/
#include <stdint.h>

/************************** System Configuration *****************************/

/* Task Scheduling Configuration */
#define     TINYOS_TASK_PRIORITY_COUNT  (32U)    
#define     TINYOS_TASK_SLICE_MAX       (10U)   

/* Stack Configuration */
#define     TINYOS_IDLE_TASK_STACK      (1024U)  
#define     TINYOS_TIMER_TASK_STACK     (1024U)  

/* Task Priority Configuration */
#define     TINYOS_TIMER_TASK_PRIORITY  (1U)    

/* System Timing Configuration */
#define     TINYOS_SYSTICK_PERIOD_MS    (10U)    
#define     TINYOS_TICKS_PER_SECOND     (1000 / TINYOS_SYSTICK_PERIOD_MS) 

/************************** Feature Configuration *****************************/

/* Kernel Object Enable Flags - Set to 0 to disable unused features and save memory */
#define     TINYOS_ENABLE_SEMAPHORE     (1U)    
#define     TINYOS_ENABLE_MUTEX         (1U) 
#define     TINYOS_ENABLE_FLAGGROUP     (1U) 
#define     TINYOS_ENABLE_MAILBOX       (1U) 
#define     TINYOS_ENABLE_MEMBLOCK      (1U) 
#define     TINYOS_ENABLE_TIMER         (1U) 
#define     TINYOS_ENABLE_CPUUSAGE      (1U) 
#define     TINYOS_ENABLE_HOOK          (1U) 

#endif /* __TINYOS_CONFIG_H__ */

